package day03.io;

import java.io.*;

/**
 * @ClassName CopyDemo3
 * @Description TODO
 * @Author xinghaiyang
 * @Date 2023/3/19 13:32
 * @Version 1.0
 *
 * 利用缓冲流来读写文件数据,提升读写效率,缓冲流是将读写操作统一转换为块读写来保证读写效率的.
 * 缓冲流:BufferedInputStream缓冲字节输入流,BufferedOutputStream缓冲字节输出流
 * 缓冲流是一对高级流,在流连接中的作用是提高读写效率
 **/
public class CopyDemo3 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("./第二阶段面试题.docx");
        BufferedInputStream bis = new BufferedInputStream(fis);//默认缓冲区为8K,8192
        //BufferedInputStream bis2 = new BufferedInputStream(fis,1024*10);//重载的构造方法可以修改缓冲区大小

        FileOutputStream fos = new FileOutputStream("./第二阶段面试题_cp.docx");
        BufferedOutputStream bos = new BufferedOutputStream(fos);//默认缓冲区为8K
        //BufferedOutputStream bos2 = new BufferedOutputStream(fos,1024*10);//重载的构造方法可以修改缓冲区大小
        int d;
        long start = System.currentTimeMillis();//开始复制时间
        while((d=bis.read())!=-1){
            bos.write(d);
        }
        long end = System.currentTimeMillis();//结束复制时间
        System.out.println("复制完毕");
        System.out.println("耗时:"+(end-start));//复制完的耗时
        //关闭高级流,同时高级流上连接的其他流也会被关闭,是高级流底层做的
        bis.close();
        bos.close();
    }
}
